#ifndef TRICELL_H
#define TRICELL_H
#include <string>

using namespace std;


//三角形类
class TriCell
{
	public:
		TriCell(void);
		//三角形的构造函数
		TriCell(double pp[3][3], int size);
		//拷贝构造函数
		//TriCell(TriCell &tri);
		//~TriCell(void);
		//计算面积和法线方向
		void AreaNorm(void);
		/*/获得三角形网格点坐标*/
		void GetCoord(double coord[][3], int size);
		//设置三角形网格的顶点坐标
		void SetCoord(double coord[][3], int size);
		//获取三角形网格的编号
		int GetNo(void); 
		//设置三角形网格的编号
		void SetNo(int no);
		//获得三角形网格表面法线
		void GetSN(double dSN[], int size);
		//设置三角形网格的顶点编号
		void SetNode(int node[], int size);
		//获得三角形网格的面积
		double GetArea(void);
		void GetNode(int node[], int size);
		inline void SetZoneNo(int no) { _zone_no = no; }; //zone_no starts from 1***
		inline int GetZoneNo() {
			return _zone_no;
		};
		
	private:
		//按照C语言的习惯，编号从0开始
		//涉及到顶点编号和网格编号

		//该三角形网格的编号,便于检索
		int no;
		 //三角形三个点坐标，逆时针编号？
		double Coord[3][3];
		 //顶点编号,start from zero
		int node[3];
		 //三角形面积
		double dCellArea;
		 //表面法线方向
		double dSurfNormal[3];
		 //表面类型
		int iSurfType;
		int _zone_no; //start from zero
};

double Triangle_Intersect(TriCell *objCell, double pos[3], double vec[3], bool directional);
#endif